import { IRole } from '@/interface';
import { $get, $post, $put, $delete } from '@/request/api';

/** 角色列表(分页) */
export function fetchRoleList(params) {
  return $get('/role/list', params);
}

/** 角色列表(不分页) */
export function fetchAllList() {
  return $get('/role/all_list');
}

/** 获取树型角色 */
export function fetchUserRole(id: number) {
  return $get(`/role/get_user_role/${id}`);
}

/** 获取树型角色 */
export function fetchTreeRole(id?: number) {
  return $get(`/role/get_tree_role`, { id });
}

/** 获取除了父级以外的所有角色（树型） */
export function fetchTreeChildRole() {
  return $get(`/role/get_tree_child_role`);
}

/** 获取该角色的子角色（只找一层） */
export function fetchGetChildRole(id: number) {
  return $get(`/role/get_child_role/${id}`);
}

/** 获取该角色的子角色（递归查找所有） */
export function fetchAllChildRole(id: number) {
  return $get(`/role/get_all_child_role/${id}`);
}

/** 新增角色 */
export function fetchCreateRole({
  p_id,
  role_name,
  role_value,
  type,
  priority,
}: IRole) {
  return $post(`/role/create`, {
    p_id,
    role_name,
    role_value,
    type,
    priority,
  });
}

/** 修改角色 */
export function fetchUpdateRole({
  id,
  p_id,
  role_name,
  role_value,
  type,
  priority,
}: IRole) {
  return $put(`/role/update/${id}`, {
    p_id,
    role_name,
    role_value,
    type,
    priority,
  });
}

/** 批量删除子角色 */
export function fetchBatchDeleteChildRoles({ id, c_roles }: IRole) {
  return $delete(`/role/batch_delete_child_roles`, {
    id,
    c_roles,
  });
}

/** 批量新增子角色 */
export function fetchBatchAddChildRoles({ id, c_roles }: IRole) {
  return $put(`/role/batch_add_child_roles`, {
    id,
    c_roles,
  });
}

/** 删除角色 */
export function fetchDeleteRole(id: number) {
  return $delete(`/role/delete/${id}`);
}
